Certbot - 简化SSL证书管理
Tips:由于笔者的服务器为CentOS 7版本,因此本文将基于CentOS 7操作系统进行阐述
1. 简介
Certbot是一个由Electronic Frontier Foundation (EFF) 开发的免费、开源工具,用于简化在服务器上部署和管理SSL / TSL证书的过程,该工具涵盖了证书获取、更新、删除等功能,省去了以往从云厂商平台获取证书 - 上传至服务器 - 调配的繁琐过程,并且Certbot支持在后台生成一个定时任务以定时刷新证书
2. 安装
每个操作系统的安装方式的各有千秋,建议进入Certbot官网选择对应的操作系统查阅关联的安装步骤,如下所示:

如果你恰巧是CentOS 7版本,恭喜!可以直接根据本篇笔记进行Certbot工具的安装与使用,官网推荐使用Snapd进行快速安装
a. Snapd
Tips:
Snapd一种软件包管理系统,可以在各种不同的 Linux 发行版上运行,包括 Ubuntu、Debian、Fedora、CentOS 等,它还支持多种硬件架构,包括 x86、ARM
在CentOS安装Snapd前,需要预先安装epel-release,安装指令如下:
1 | sudo yum install epel-release |
Tips:
epel-release是 Extra Packages for Enterprise Linux(EPEL)的缩写,是为 Red Hat Enterprise Linux(RHEL)及其衍生发行版操作系统提供额外软件包的一个项目,这些额外的软件包通常包含了一些不在官方软件仓库中的软件,如开源的工具、库和应用程序等,安装这个软件包的目的在于将默认不在官方仓库中的软件包加入进来,并且能够使用系统的包管理器 (yum) 进行安装
安装EPEL额外软件包仓库后,通过以下命令安装Snapd:
1 | sudo yum install snapd |
安装完成后,通过以下命令启动Snapd服务:
1 | sudo systemctl enable --now snapd.socket |
通过以下命令创建Snapd的软链接,目的是为了方便默认情况下使用Snapd安装的应用程序能够从/var/lib/snapd/snap映射到/snap目录下
1 | sudo ln -s /var/lib/snapd/snap /snap |
至此,Snapd安装完成,可通过snap --version查看对应的版本号,如下所示:
1 | snap --version |
b. Certbot
在正式安装前,需要卸载已有的Certbot工具,CentOS操作系统可以通过以下命令进行卸载:
1 | sudo yum remove certbot |
在清理掉系统原有的Certbot工具后,便可以通过以下命令使用Snapd进行快速安装:
1 | sudo snap install --classic certbot |
安装完成后,为其创建可执行的软链接:
1 | sudo ln -s /snap/bin/certbot /usr/bin/certbot |
通过certbot --version可以判断是否已经正常安装,如下所示:
1 | certbot --version |
至此,Certbot工具已安装完成
3. 使用
Tips:在使用
Certbot工具前,需要确保nginx关闭,因为默认情况下nginx会占用80端口,同时需要确保80端口与443端口外网可通
- 前往云厂商域名管理平台,将需要生成SSL证书的域名解析指向当前服务器
- 进入服务器,使用
nginx -s stop关闭nginx服务,以确保80端口不被占用,因为Certbot工具会在生成证书的时候在本地启动一个Web服务,该服务默认使用的是80端口 - 生成指定域名的SSL证书,其中
-d参数后跟着的是需要生成证书的域名,-m参数后跟着的是个人邮箱
1 | certbot certonly --standalone -d zchengb.top -m zxchengb@163.com --agree-tos --no-eff-email |
- 通过以上命令生成SSL证书后,复制生成证书的路径,进入
nginx.conf配置文件,进行域名证书配置,如下所示:
1 | server { |
- 需要后续需要手动刷新SSL证书,可通过
sudo certbot renew命令进行刷新 - 默认情况下,在
certbot生成证书后,会在系统内默认写入一个定时任务用于定期刷新证书,CentOS 7可通过systemctl list-timers命令进行确认,如下所示:
1 | systemctl list-timers |
如果需要删除这个默认的定时任务,可以通过systemctl disable snap.certbot.renew.timer进行删除
自动刷新证书也是certbot的精华所在,基于此可以免去3个月更新一次SSL证书的烦恼,如果通过以上命令未查看到对应的定时任务,也可以检查以下目录下的文件:
/etc/crontab//etc/cron.*/*
一般来说,在配置完成后,会在系统的/etc/letsencrypt/renewal/下生成对应的域名配置文件,里头还包含了执行前后的钩子配置
其他常用命令:
sudo certbot renew:手动触发证书更新(需要通过关闭80端口来确保更新成功)sudo certbot delete:删除不再需要的证书sudo certbot certificates:列出当前系统中安装的所有证书
至此,已完成SSL证书的配置,在完成Nginx配置后,可以通过nginx命令启动nginx服务,并通过浏览器访问https://<您的域名>来确认SSL证书是否已生效